const db = uniCloud.database()
const collection = db.collection('iss-wallpaper-classify')
const ApiResponse = require('iss-api-response')
const ErrorMessage = ApiResponse.ErrorMessage
const commonMixin = require('common-mixin')

module.exports = {
  ...commonMixin,
  
  /**
   * 获取壁纸分类信息
   * @param {boolean} select 是否获取推荐分类（首页展示用）
   * @param {number} pageNum 当前页码（select为false时有效）
   * @param {number} pageSize 每页数量（select为false时有效）
   * @returns {object} 返回分类列表和分页信息
   */
  async getClassifyList({select = false, pageNum = 1, pageSize = 10}) {
    try {
      // 参数校验（仅在非select模式时校验分页参数）
      if (!select && (!pageNum || !pageSize)) {
        return ApiResponse.badRequest(ErrorMessage.PAGENATION_PARAMS_ERROR)
      }
      
      // 基础查询条件
      let whereCondition = { enable: true }
      
      // 如果select为true，则添加select字段条件
      if (select) {
        whereCondition.select = true
      }
      
      let query = collection.where(whereCondition).orderBy('sort', 'asc')
      
      let res, total
      
      if (select) {
        // 推荐分类模式 - 获取所有被标记为推荐的分类
        res = await query.get()
        total = res.data.length
      } else {
        // 分页模式
        const offset = (pageNum - 1) * pageSize
        res = await query.skip(offset).limit(pageSize).get()
        const countRes = await collection.where(whereCondition).count()
        total = countRes.total
      }
      
      // 返回数据
      return ApiResponse.success({
        list: res.data,
        total,
        pageNum: select ? 1 : pageNum,
        pageSize: select ? total : pageSize,
        isLogin: !!this.userInfo // 额外返回是否登录状态
      })
      
    } catch (e) {
      console.error(ErrorMessage.GET_CLASSIFYLIST_ERROR, e)
      return ApiResponse.serverError(ErrorMessage.GET_CLASSIFYLIST_ERROR)
    }
  }
}